#define _USE_MATH_DEFINES

#include <cstdio>
#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
#include <map>
#include <set>
#include <queue>
#include <cassert>
#include <stack>
#include <cstdlib>
#include <bitset>
#include <cmath>

#define forn(i,n) for (int i = 0; i < int(n); ++i)
#define pb push_back
#define all(a) a.begin(),a.end()
#define sz(a) int(a.size())
#define mp make_pair

using namespace std;

typedef long long li;
typedef long double ld;

typedef pair<int,int> pt;
#define ft first
#define sc second

const int INF = int(1e9);
const li INF64 = li(1e18);
const ld EPS = 1e-9;

#define right _______right

//#define TASK_NAME ""

map<int, int> right;
int n, m;

bool read() {
	if (scanf("%d%d", &n, &m) != 2)
		return false;
	return true;
}

inline int next(int a)
{
	return a + 1 < n ? a + 1 : 0;
}

int used[100005];
int T = 1;

int getRight(int x)
{
	int pu = used[x];
	used[x] = T;
	if (right.count(x) == 0)
		return x;
	else
	{
		if (pu == T)
			return -1;
		return right[x] = getRight(right[x]);
	}
}

bool ok(int m, int l, int r)
{
	if (l <= r)
		return l <= m && m <= r;
	else
		return m >= r && m <= l;
}

bool cmp(pair<int, int> a, pair<int, int> b)
{
	if (a.sc != b.sc)
		return a.sc < b.sc;
	return a.ft < b.ft;
}

pair<int, int> q[100005];

void clearMap()
{
	map<int, int> tmp;
	swap(right, tmp);
}

void solve() {
	bool bad = false;
	clearMap();
	forn (i, m)
		scanf("%d%d", &q[i].ft, &q[i].sc);

	sort(q, q + m, cmp);

	forn (i, m)
	{
		int l = q[i].ft, r = q[i].sc;
		T++;
		int rg = getRight(l);
		if (!ok(rg, l, r))
			bad = true;
		if (!bad)
			right[rg] = getRight(next(rg));
	}

	if (bad)
		puts("NO");
	else
		puts("YES");
}

int main() {
#ifdef TASK_NAME
	freopen(TASK_NAME ".in", "r", stdin);
	freopen(TASK_NAME ".out", "w", stdout);
#endif

#ifdef _DEBUG
	freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
#endif
	int t;
	scanf("%d", &t);
	while (read())
		solve();

	return 0;
}